//package StudyCode.summary.mycollection;
//
//import java.util.ArrayList;
//import java.util.Comparator;
//
///**
// * 版权所有 科技与人文(www.tah1986.com)
// */
//public class ReturnsTheLargestGroupOfAnagramsInTheInputArrayOfWordsInNoParticularOrder {
//	public static void main(String[] argv) {
//		String[] words = new String[]{"1", "abc", "level", null, "www.tah1986.com", "asdf 123"};
//		System.out.println(java.util.Arrays.toString(getLargestAnagramGroup(words)));
//	}
//
//	public static String[] getLargestAnagramGroup(String[] words) {
//		String[] anagrams = new String[words.length];
//		String[] anagramsNew = new String[0];
//		int anagramIndex = 0;
//		for (int i = 0; i < words.length; i++) {
//			boolean iAdded = false;
//			for (int j = i + 1; j < words.length; j++) {
//				if (areAnagrams(words[i], words[j])) {
//					if (!wordAlreadyAdded(words[i], anagrams)
//							|| !wordAlreadyAdded(words[j], anagrams)) {
//						if (!iAdded) {
//							anagrams[anagramIndex] = words[i];
//							anagramIndex++;
//							iAdded = true;
//						}
//						anagrams[anagramIndex] = words[j];
//						anagramIndex++;
//					}
//				}
//
//			}
//			anagrams = cutArray(anagrams);
//			if (anagramsNew.length < anagrams.length) {
//				anagramsNew = anagrams;
//			}
//			anagrams = new String[words.length];
//			anagramIndex = 0;
//			iAdded = false;
//		}
//		insertionSort(anagramsNew, new SortByAnagrams());
//		return anagramsNew;
//	}
//
//	public static String[] getLargestAnagramGroup(String filename) {
//		String[] wordsFromFile = AnagramTester.readFile(filename);
//		return getLargestAnagramGroup(wordsFromFile);
//	}
//
//	public static boolean areAnagrams(String firstWord, String secondWord) {
//		String firstSorted = sort(firstWord);
//		String secondSorted = sort(secondWord);
//		if (firstSorted.equals(secondSorted)) {
//			return true;
//		}
//		return false;
//	}
//
//	private static boolean wordAlreadyAdded(String word, String[] array) {
//		for (int i = 0; i < array.length; i++) {
//			if (array[i] != null && array[i].equalsIgnoreCase(word)) {
//				return true;
//			}
//		}
//		return false;
//	}
//
//	public static String[] cutArray(String[] words) {
//		ArrayList<String> list = new ArrayList<String>();
//		for (String s : words) {
//			if (s != null && s.length() > 0) {
//				list.add(s);
//			}
//		}
//		words = list.toArray(new String[list.size()]);
//		return words;
//
//	}
//
//
//	public static <T> void insertionSort(T[] array,
//	                                     Comparator<? super T> mComparator) {
//		int i, j;
//		for (i = 1; i < array.length; i++) {
//			T index = array[i];
//			for (j = i; j > 0
//					&& mComparator.compare(index, array[j - 1]) < 0; j--) {
//				array[j] = array[j - 1];
//			}
//			array[j] = index;
//		}
//	}
//
//
//	public static String sort(String word) {
//		String sortedWord = "";
//
//		char[] tempCharArray = word.toLowerCase().toCharArray();
//
//		Character[] wordCharacters = new Character[tempCharArray.length];
//		for (int i = 0; i < tempCharArray.length; i++) {
//			wordCharacters[i] = tempCharArray[i];
//		}
//
//		insertionSort(wordCharacters, new SortByCharacters());
//
//		for (int i = 0; i < wordCharacters.length; i++) {
//			sortedWord += wordCharacters[i];
//		}
//		return sortedWord;
//	}
//}
